package com.example.xupdateLearningProject.custom;

import android.content.DialogInterface;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;

import com.xuexiang.xupdate.entity.PromptEntity;
import com.xuexiang.xupdate.entity.UpdateEntity;
import com.xuexiang.xupdate.proxy.IUpdatePrompter;
import com.xuexiang.xupdate.proxy.IUpdateProxy;
import com.xuexiang.xupdate.service.OnFileDownloadListener;
import com.xuexiang.xupdate.utils.UpdateUtils;
import com.xuexiang.xutil.display.HProgressDialogUtils;

import java.io.File;

/**
 * 自定义版本更新提示器
 */
public class CustomUpdatePrompt implements IUpdatePrompter {
    @Override
    public void showPrompt(@NonNull UpdateEntity updateEntity, @NonNull IUpdateProxy updateProxy, @NonNull PromptEntity promptEntity) {
        String updateInfo = UpdateUtils.getDisplayUpdateInfo(updateProxy.getContext(),updateEntity);
        AlertDialog.Builder builder = new AlertDialog.Builder(updateProxy.getContext());
        builder.setTitle(String.format("是否升级到%s版本",updateEntity.getVersionCode()));
        builder.setMessage(updateInfo);
        builder.setPositiveButton("升级", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                updateProxy.startDownload(updateEntity, new OnFileDownloadListener() {
                    @Override
                    public void onStart() {
                        HProgressDialogUtils.showHorizontalProgressDialog(updateProxy.getContext(),"下载进度...",false);
                    }

                    @Override
                    public void onProgress(float progress, long total) {
                        HProgressDialogUtils.setProgress(Math.round(progress * 100));
                    }

                    @Override
                    public boolean onCompleted(File file) {
                        HProgressDialogUtils.cancel();
                        return true;
                    }

                    @Override
                    public void onError(Throwable throwable) {
                        HProgressDialogUtils.cancel();
                    }
                });
            }
        });
        if (updateEntity.isIgnorable()) {
            builder.setNegativeButton("暂不升级", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    UpdateUtils.saveIgnoreVersion(updateProxy.getContext(),updateEntity.getVersionName());
                }
            }).setCancelable(true);
        }else{
            builder.setCancelable(false);
        }
        builder.create().show();
    }
}
